package com.ddwl.common.constant;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * @author wenbin
 * @Description 用户数据统计
 */
public interface StatisticsEnum {

    String UN_SEND_COUNT="未发货订单";

    String UN_APPROVE_WITHDRAW_APPLY="未处理的提现申请";

    String UN_APPROVE_ARTICLES="未审核的文章";

    String UN_APPROVE_IDCARD="未审批的身份证";

    String ZERO_COUNT_ITEM="上架状态商品0库存";

    String PENDING_AFTERSALE_COUNT="待处理的售后订单";

    @AllArgsConstructor
    @Getter
    enum platform {
        MALL( 0,"小程序"),
        APP( 1,"APP");
        private Integer code;
        private String name;

        // 根据code获取名称
        public static String getNameByCode(Integer code) {
            for (platform t : platform.values()) {
                if (t.getCode().equals(code))
                    return t.getName();
            }
            return null;
        }

        // 根据name获取code
        public static Integer getCodeByName(String name) {
            for (platform t : platform.values()) {
                if (t.getCode().equals(name))
                    return t.getCode();
            }
            return null;
        }


        /**
         * 根据code判断 是否是枚举中的一员
         * @param code
         * @return
         */
        public static boolean isIncludeCode(Integer code) {
            platform t = getCode(code);
            if(null==t) return false;
            return true;
        }

        public static platform getCode(Integer code) {
            for (platform t : platform.values()) {
                if (t.getCode().equals(code))
                    return t;
            }
            return null;
        }
        /**
         * 根据name判断 是否是枚举中的一员
         * @param name
         * @return
         */
        public static boolean isIncludeName(String name) {
            platform t = getName(name);
            if(null==t) return false;
            return true;
        }

        public static platform getName(String name) {
            for (platform t : platform.values()) {
                if (t.getName().equals(name))
                    return t;
            }
            return null;
        }
    }

    @AllArgsConstructor
    @Getter
    enum payType {
        WXPAY( 0,"微信"),
        ALIPAY( 1,"支付宝");
        private Integer code;
        private String name;

        // 根据code获取名称
        public static String getNameByCode(Integer code) {
            for (payType t : payType.values()) {
                if (t.getCode().equals(code))
                    return t.getName();
            }
            return null;
        }

        // 根据name获取code
        public static Integer getCodeByName(String name) {
            for (payType t : payType.values()) {
                if (t.getCode().equals(name))
                    return t.getCode();
            }
            return null;
        }


        /**
         * 根据code判断 是否是枚举中的一员
         * @param code
         * @return
         */
        public static boolean isIncludeCode(Integer code) {
            payType t = getCode(code);
            if(null==t) return false;
            return true;
        }

        public static payType getCode(Integer code) {
            for (payType t : payType.values()) {
                if (t.getCode().equals(code))
                    return t;
            }
            return null;
        }
        /**
         * 根据name判断 是否是枚举中的一员
         * @param name
         * @return
         */
        public static boolean isIncludeName(String name) {
            payType t = getName(name);
            if(null==t) return false;
            return true;
        }

        public static payType getName(String name) {
            for (payType t : payType.values()) {
                if (t.getName().equals(name))
                    return t;
            }
            return null;
        }
    }


    @AllArgsConstructor
    @Getter
    enum orderStyle {
        ORDER( 0,"商品订单"),
        MOBILE( 1,"话费充值订单");
        private Integer code;
        private String name;

        // 根据code获取名称
        public static String getNameByCode(Integer code) {
            for (orderStyle t : orderStyle.values()) {
                if (t.getCode().equals(code))
                    return t.getName();
            }
            return null;
        }

        // 根据name获取code
        public static Integer getCodeByName(String name) {
            for (orderStyle t : orderStyle.values()) {
                if (t.getCode().equals(name))
                    return t.getCode();
            }
            return null;
        }


        /**
         * 根据code判断 是否是枚举中的一员
         * @param code
         * @return
         */
        public static boolean isIncludeCode(Integer code) {
            orderStyle t = getCode(code);
            if(null==t) return false;
            return true;
        }

        public static orderStyle getCode(Integer code) {
            for (orderStyle t : orderStyle.values()) {
                if (t.getCode().equals(code))
                    return t;
            }
            return null;
        }
        /**
         * 根据name判断 是否是枚举中的一员
         * @param name
         * @return
         */
        public static boolean isIncludeName(String name) {
            orderStyle t = getName(name);
            if(null==t) return false;
            return true;
        }

        public static orderStyle getName(String name) {
            for (orderStyle t : orderStyle.values()) {
                if (t.getName().equals(name))
                    return t;
            }
            return null;
        }
    }

    @AllArgsConstructor
    @Getter
    enum UserStyle {
        REGISTER( 0,"注册用户"),
        ACTIVE( 1,"活跃用户"),
        CUSTOMER( 2,"游客");
        private Integer code;
        private String name;

        // 根据code获取名称
        public static String getNameByCode(Integer code) {
            for (UserStyle t : UserStyle.values()) {
                if (t.getCode().equals(code))
                    return t.getName();
            }
            return null;
        }

        // 根据name获取code
        public static Integer getCodeByName(String name) {
            for (UserStyle t : UserStyle.values()) {
                if (t.getCode().equals(name))
                    return t.getCode();
            }
            return null;
        }


        /**
         * 根据code判断 是否是枚举中的一员
         * @param code
         * @return
         */
        public static boolean isIncludeCode(Integer code) {
            UserStyle t = getCode(code);
            if(null==t) return false;
            return true;
        }

        public static UserStyle getCode(Integer code) {
            for (UserStyle t : UserStyle.values()) {
                if (t.getCode().equals(code))
                    return t;
            }
            return null;
        }
        /**
         * 根据name判断 是否是枚举中的一员
         * @param name
         * @return
         */
        public static boolean isIncludeName(String name) {
            UserStyle t = getName(name);
            if(null==t) return false;
            return true;
        }

        public static UserStyle getName(String name) {
            for (UserStyle t : UserStyle.values()) {
                if (t.getName().equals(name))
                    return t;
            }
            return null;
        }
    }
    
    @AllArgsConstructor
    @Getter
    enum channel {
        UN_SEND_COUNT( "78562310","未发货订单", "UN_SEND_COUNT"),
        UN_APPROVE_WITHDRAW_APPLY( "78562311","未处理的提现申请", "UN_APPROVE_WITHDRAW_APPLY"),
        UN_APPROVE_ARTICLES( "78562312","未审核的文章", "UN_APPROVE_ARTICLES"),
        UN_APPROVE_IDCARD( "78562313","未审批的身份证", "UN_APPROVE_IDCARD"),
        ZERO_COUNT_ITEM( "78562314","上架状态商品0库存", "ZERO_COUNT_ITEM"),
        PENDING_AFTERSALE_COUNT( "78562315","待处理的售后订单", "PENDING_AFTERSALE_COUNT"),
        STATISTIC( "78562316","统计数据", "STATISTIC"),
        SHOP_APPROVE( "78562317","未审批的门店省申请", "SHOP_APPROVE"),
        ;
        private String code;
        private String name;
        private String id;

        // 根据code获取名称
        public static String getNameByCode(String code) {
            for (channel t : channel.values()) {
                if (t.getCode().equals(code))
                    return t.getName();
            }
            return code;
        }
        // 根据code获取id
        public static String getIdByCode(String code) {
            for (channel t : channel.values()) {
                if (t.getCode().equals(code))
                    return t.getId();
            }
            return code;
        }

        // 根据name获取code
        public static String getCodeByName(String name) {
            for (channel t : channel.values()) {
                if (t.getCode().equals(name))
                    return t.getCode();
            }
            return name;
        }
        // 根据name获取id
        public static String getIdByName(String name) {
            for (channel t : channel.values()) {
                if (t.getCode().equals(name))
                    return t.getId();
            }
            return name;
        }

        /**
         * 根据code判断 是否是枚举中的一员
         * @param code
         * @return
         */
        public static boolean isIncludeCode(String code) {
            channel t = getCode(code);
            if(null==t) return false;
            return true;
        }

        public static channel getCode(String code) {
            for (channel t : channel.values()) {
                if (t.getCode().equals(code))
                    return t;
            }
            return null;
        }
        /**
         * 根据name判断 是否是枚举中的一员
         * @param name
         * @return
         */
        public static boolean isIncludeName(String name) {
            channel t = getName(name);
            if(null==t) return false;
            return true;
        }

        public static channel getName(String name) {
            for (channel t : channel.values()) {
                if (t.getName().equals(name))
                    return t;
            }
            return null;
        }

    }

}
